我写这篇文章主要学习我不知道的独立调用时this的指向
this的指向,是在函数被调用的时候确定的,也就是执行上下文被创建时确定的。
(1)简单的指向全局
(2)函数中的this指向
在一个函数上下文中,this由调用者提供,由调用函数的方式来决定。如果函数独立调用,那么该函数内部的this,则指向undefined。但是在非严格模式中,当this指向undefined时,它会被自动指向全局对象。
var a = 20;
var obj = {
a: 10,
c: this.a + 20,
fn: function () {
return this.a;
}
}
console.log(obj.c); //独立调用 非严格模式指向全局 40
console.log(obj.fn()); //对象调用 指向对象 10
当obj在全局声明时,无论obj.c在什么地方调用,这里的this都指向全局对象,而当obj在函数环境中声明时,这个this指向undefined,在非严格模式下,会自动转向全局对象。
var a = 20;
var foo = {
a: 10,
getA: function () {
return this.a;
}
}
console.log(foo.getA()); //非独立调用 10
var test = foo.getA;
console.log(test()); //独立调用 20
(3)用call或者apply显式更改this
(4)构造函数new对象this
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。